#pragma once
#include "inc.h"

class GCamera
{
public:
	GCamera(Vector3f eye, Vector3f target, Vector3f up, float fAspect);
	void UpdateMatrix();
	void UpdateCameraAxis();

	Eigen::Vector3f m_vEye;
	Eigen::Vector3f m_vTarget;
	Eigen::Vector3f m_vUp;

	// Camera Axis
	Eigen::Vector3f x;
	Eigen::Vector3f y;
	Eigen::Vector3f z;

	Eigen::Matrix4f m_persp;
	Eigen::Matrix4f m_view;
	Eigen::Matrix4f m_vp;

	float m_fAspect = 1.0f;
private:
	Matrix4f GenProjectionMatrix(float fFov, float fAspect, float fNear, float fFar);
	Matrix4f GenViewMatrix();
	float m_fNear = -0.1f;
	float m_fFar = -10000.0f;
	float m_fFov = 60;
};